package com.zoe.onelink.core.property.http;

import lombok.Data;

/**
 * <p>标题: </p>
 * <p>描述: </p>
 * <p>版权: Copyright (c) 2022</p>
 * <p>公司: 智业软件股份有限公司</p>
 *
 * @version: 1.0
 * @author: ruansheng
 * @date: 2022-08-26
 */
@Data
public class HttpClientConfig {

    /**
     * 当前Client实例最大的并发请求数
     * 因为同步请求占用的是服务本身的线程池,所以这里通过maxRequest限制同步(不包含异步的请求数)QPS
     */
    private int maxRequest = 50;

    /**
     * 单个主机最大请求并发数，这里的主机指被请求方主机，一般可以理解对调用方有限流作用。注意：websocket请求不受这个限制。
     */
    private int maxRequestPerHost = 20;

    /**
     * 初始线程池大小
     * 医院的场景并发不高且不是每个项目都需要用到该工具类,线程核心数默认设置为0即可
     */
    private int corePoolSize = 0;

    /**
     * 最大线程池大小
     */
    private int maxPoolSize = 50;

    /**
     * 线程最大空闲时间(秒)
     */
    private int keepAliveTimeSeconds = 3 * 60;

    /**
     * 最大任务队列大小
     */
    private int maxQueueSize = 1024;

    /**
     * 连接创建超时时间 (三次握手 + SSL建立) (毫秒)
     */
    private int connectTimeoutMillis = 3000;

    /**
     * 请求超时时间(毫秒)
     */
    private int callTimeoutMillis = 20_000;

    /**
     * 响应体最大长度 (默认10M)
     */
    private long responseMaxContentLength = 10_000_000;

}
